package negocio.entidades;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Min;

import org.hibernate.validator.constraints.NotEmpty;

@Entity
public class Atividade extends Arquivo {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@NotEmpty
	private String nome;
	
	private String descricao;
	
	@Temporal(TemporalType.DATE)
	private Date dtCadastro;
	
	@Temporal(TemporalType.TIMESTAMP)
	private Date dtAbertura;
	
	@Temporal(TemporalType.TIMESTAMP)
	private Date dtEncerramento;
	
	@Min(0)
	private double peso;
	
	private boolean status;
	

	// ------------------relacionamentos---------------------//
	@ManyToOne
	private Disciplina disciplina;
	
	
	@OneToMany(mappedBy="atividade", fetch=FetchType.LAZY)
	private Set<AtividadeAluno> atividadeAlunos = new HashSet<AtividadeAluno>();
	
	// ----------------- GETs e SETs ------------------------//
	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDescricao() {
		return descricao;
	}



	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}



	public Date getDtCadastro() {
		return dtCadastro;
	}



	public void setDtCadastro(Date dtCadastro) {
		this.dtCadastro = dtCadastro;
	}



	public Date getDtAbertura() {
		return dtAbertura;
	}



	public void setDtAbertura(Date dtAbertura) {
		this.dtAbertura = dtAbertura;
	}



	public Date getDtEncerramento() {
		return dtEncerramento;
	}



	public void setDtEncerramento(Date dtEncerramento) {
		this.dtEncerramento = dtEncerramento;
	}



	public double getPeso() {
		return peso;
	}



	public void setPeso(double peso) {
		this.peso = peso;
	}



	public boolean getStatus() {
		return status;
	}



	public void setStatus(boolean status) {
		this.status = status;
	}



	public Disciplina getDisciplina() {
		return disciplina;
	}



	public void setDisciplina(Disciplina disciplina) {
		this.disciplina = disciplina;
	}



	public Set<AtividadeAluno> getAtividadeAlunos() {
		return atividadeAlunos;
	}



	public void setAtividadeAlunos(Set<AtividadeAluno> atividadeAlunos) {
		this.atividadeAlunos = atividadeAlunos;
	}

}
